perm filename SYSIM.FAI[CMS,LCS]4 blob sn#192524 filedate 1975-12-17 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00030 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002		TITLE SIMU
C00005 00003		BMI	←60
C00007 00004		BCC	←220
C00008 00005		CPYI	←300
C00009 00006	ZWD:	-1,,777400
C00011 00007	LOADER:	PUSHJ P,INP+1
C00013 00008	ERRO:	OUTSTR [ASCIZ/	???
C00015 00009	MTST:	HRRZI D,(DR)
C00017 00010	IO:	TDZ D,ZWD
C00020 00011		dddlin ←←20000
C00022 00012	ZPAGE:	PUSHJ P,IFTCH
C00025 00013	LDIM:	PUSHJ P,IFTCH
C00027 00014	PUTCH:	HRRZI MA,PONE(SP)
C00029 00015	ORAC:	OR A
C00030 00016	ADDER:	TRZ PS,VBIT
C00031 00017	INSTBL:	
C00034 00018	[	TRZ PS,CBIT		CLC
C00036 00019	[	PUSHJ P,PUL		PLP
C00038 00020	[	PUSHJ P,PUL		RTI
C00039 00021	[	HRRZI B,VBIT		BVC
C00040 00022	[	PUSHJ P,PUL	RTS
C00042 00023	[	TRO PS,IBIT		SEI
C00044 00024	[	HRRZI B,CBIT
C00046 00025	[	HRRZI (A)
C00048 00026	[	PUSHJ P,IFTCH
C00050 00027	[	TRZ PS,DBIT
C00052 00028	[	HRRZI B,ZBIT
C00053 00029	IBUF:	BLOCK 4
C00054 00030	GETNAM:	MOVEI A,
C00055 ENDMK
C⊗;
	TITLE SIMU
	EXTERNAL $I
	A←1 ↔ X←2 ↔ Y←3 ↔ SP←4 ↔ PS←5 ↔ PC←6
	IR←7 ↔ B←←10 ↔ C←←11 ↔ D←←12 ↔ F←←16
	E←←13 ↔ DR←←14 ↔ MA←←15 ↔ P←17 ↔ NBUFS←←4
	CBIT←←1 ↔ ZBIT←←2 ↔ IBIT←←4 ↔ DBIT←←10
	BRKBIT←←20 ↔ VBIT←←100 ↔ NBIT←←200
	RSTV←177774 ↔ NMIV←177772 ↔ IRQV←177776
	PONE←←400 ↔ NEG1←←377 ↔ BNINE←←400
	ZHW←777400 ↔ ZHW16←600000 ↔ IOBIT←200000
	IOMSK←400000 ↔ RAMBIT←100000

	BRK	←←0
	ORAIX	←←1
	ORAZ	←←5
	ASLZ	←←6

	PHP	←10
	ORAI	←11
	ASLA	←12
	ORA	←15
	ASL	←16

	BPL	←20
	ORAIY	←21
	ORAZX	←25
	ASLZX	←26

	CLC	←30
	ORAY	←31
	ORAX	←35
	ASLX	←36

	JSR	←40
	ANDIX	←41
	BITZ	←44
	ANDZ	←45
	ROLZ	←46

	PLP	←50
	ANDI	←51
	ROLA	←52
	BIT	←54
	AND	←55
	ROL	←56
	BMI	←60
	ANDIY	←61
	ANDZX	←65
	ROLZX	←66

	SEC	←70
	ANDY	←71
	ANDX	←75
	ROLX	←76
	
	RTI	←100
	EORIX	←101
	EORZ	←105
	LSRZ	←106

	PHA	←110
	EORI	←111
	LSRA	←112
	JMP	←114
	EOR	←115
	LSR	←116

	BVC	←120
	EORIY	←121
	EORZX	←125
	LSRZX	←126

	CLI	←130
	EORY	←131
	EORX	←135
	LSRX	←136

	RTS	←140
	ADCIX	←141
	ADCZ	←145

	PLA	←150
	ADCI	←151
	JMPIN	←154
	ADC	←155

	BVS	←160
	ADCIY	←161
	ADCZX	←165
	
	SEI	←170
	ADCY	←171
	ADCX	←175

	STAIX	←201
	STYZ	←204
	STAZ	←205
	STXZ	←206

	DEY	←210
	TXA	←212
	STY	←214
	STA	←215
	STX	←216
	BCC	←220
	STAIY	←221
	STYZX	←224
	STAZX	←225
	STXZY	←226

	TYA	←230
	STAY	←231
	TXS	←232
	STAX	←235

	LDYI	←240
	LDAIX	←241
	LDXI	←242
	LDYZ	←244
	LDAZ	←245
	LDXZ	←246

	TAY	←250
	LDAI	←251
	TAX	←252
	LDY	←254
	LDA	←255
	LDX	←256

	BCS	←260
	LDAIY	←261
	LDYZX	←264
	LDAZX	←265
	LDXZY	←266

	CLV	←270
	LDAY	←271
	TSX	←272
	LDYX	←274
	LDAX	←275
	LDXY	←276
	CPYI	←300
	CMPIX	←301
	CPYZ	←304
	CMPZ	←305
	DECZ	←306

	INY	←310
	CMPI	←311
	DEX	←312
	CPY	←314
	CMP	←315
	DEC	←316

	BNE	←320
	CMPIX	←321
	CMPZ	←324
	SBCZ	←325
	INCZ	←326

	CLD	←330
	CMPY	←331
	CMPX	←335
	DECX	←336

	CPXI	←340
	SBCIY	←341
	CPXZ	←344
	SBCZ	←345
	INCZ	←346

	INX	←350
	SBCI	←351
	NOP	←352
	CPX	←354
	SBC	←355
	INC	←356

	BEQ	←360
	SBCIY	←361
	SBCZX	←365
	INCZX	←366

	SED	←370
	SBCY	←371
	SBCX	←375
	INCX	←376
ZWD:	-1,,777400
ZWD16:	-1,,600000
PDL:	BLOCK 100

R:	BYTE (7) 175,175,175,"O","A"
	BYTE (7) 175,";","X",175,";"
	BYTE (7) "Y",175,";","S","P"
	BYTE (7) 175,";","P","S",175
	BYTE (7) ";","P","C",175,";"
	BYTE (7) 175,175,175,"C","I"
	BYTE (7) "R",175,";"

SS:	BYTE (7) "X","C","U","T","E"
	BYTE (7) 175,"B",175,"P"

STAR:	RESET
	HRLZI MEM
	HRRI MEM+1
	SETOM MEM
	BLT MEM+77777
MAP:	MOVE P,[PDPO:	IOWD 100,PDL]
	SETZ X,
	MOVE D,[RAMBIT,,RAMBIT]
	PUSHJ P,MEMDF
	PUSHJ P,DEFA
	AOJ X,
	SETZ D,
	PUSHJ P,MEMDF
	PUSHJ P,DEFA
	AOJ X,
	MOVE D,[IOMSK,,IOMSK]
	PUSHJ P,MEMDF
	PUSHJ P,DEFA

GFILE:	CLRBFI
	OUTSTR [ASCIZ/
	DMP FILE = /]
	PUSHJ P,GNAME
	OPEN 11,[14↔'DSK   '↔IBUF]
	JRST 4,.
	INBUF 11,NBUFS
	LOOKUP 11,FILNAM
	CAIA
	PUSHJ P,LOADER

ZRG:	MOVE [1,,2]
	SETZ A,
	BLT PC
RST:	MOVE P,PDPO
	PUSHJ P,SETRST
	JSR $I

FETCH:	SKIPE E,IFLG#
	PUSHJ P,INTR
	PUSHJ P,IFTCH
	HRRZI IR,(DR)
XCUTE:	PUSHJ P,@INSTBL(IR)
	JRST FETCH

INTR:	CAIN E,RSTV
	JRST RES
	TRNE E,-1
	JRST NOCK
	TRNE PS,IBIT
	POPJ P,
	HRRZI E,IRQV
	MOVEM E,IFLG
NOCK:	PUSHJ P,PUPC+1
	PUSHJ P,@INSTBL+PHP
RES:	HRRZ PC,IFLG
	TRO PS,IBIT
	HRRZI DR,JMP
	SETZ E,
	HRRM E,IFLG
	AOS (P)
	POPJ P,
LOADER:	PUSHJ P,INP+1
	HRRZI X,200
	ADD X,IBUF+2
	HRLZI Y,-100000
LOAD:	PUSHJ P,INP
	HRLZ A,1(X)
	AOBJP X,GIN
GMO:	HRR A,1(X)
	ORM A,MEM(Y)
	AOBJP Y,DONE
	AOBJN X,LOAD+1
	JRST LOAD

DONE:	POPJ P,

GIN:	PUSHJ P,INP
	JRST GMO

INP:	HRRM X,IBUF+1
	IN 11,
	JRST SETX
	STATO 11,20000
	JRST 4,.
	POP P,
	POPJ P,

SETX:	HRRZ X,IBUF+2
	MOVNI X,(X)
	HRLZI X,(X)
	HRR X,IBUF+1
	POPJ P,
	
DEFA:	MOVE DR,BTBL(X)
	MOVEM D,-1(DR)
	BLT DR,@DTBL(X)
	POPJ P,

BTBL:	MEM,,MEM+1
	MEM+77540,,MEM+77541		;SHOULD BE 77600
	MEM+75600,,MEM+75601

DTBL:	MEM+777
	MEM+77777
	MEM+75777

STRTBL:	[ASCIZ/
	RAM BLOCK (ADR ∨ L:H) = /]
	[ASCIZ/
	ROM BLOCK (ADR ∨ L:H) = /]
	[ASCIZ*
	I/O BLOCK (ADR ∨ L:H) = *]
ERRO:	OUTSTR [ASCIZ/	???
/]
MEMDF:	CLRBFI
	OUTSTR @STRTBL(X)
	INCHWL A
	CAIN A,15
	POPJ P,
	PUSHJ P,INNUM
	TDNE ZWD16
	JRST ERRO
	HRRZ DR,
	INCHRS A
	JRST ERRO
	CAIN A,12
	JRST ONEAD
	PUSHJ P,INNUM
	TDNE ZWD16
	JRST ERRO
MKIT:	HRRZI E,(DR)
	LSH DR,-1
	ADDI DR,MEM
	HRRZ MA,
	LSH MA,-1
	CAILE DR,MEM(MA)
	JRST ERRO
	AOS (P)		;FOR NOT DEFALT
	ANDI E,1
	JUMPE E,EVEN
	HRRM D,(DR)
	CAIL DR,MEM(MA)
	JRST MEMDF
	AOJ DR,
EVEN:	ANDI 1
	JUMPN MOV
	HLLM D,MEM(MA)
	CAIL DR,MEM(MA)
	JRST MEMDF
	SOJ MA,
MOV:	MOVEM D,(DR)
	CAIL DR,MEM(MA)
	JRST MEMDF
	HRLI DR,(DR)
	AOJ DR,
	BLT DR,MEM(MA)
	JRST MEMDF

ONEAD:	HRRZI (DR)
	JRST MKIT

INNUM:	SETZ
	CAIL A,60
	CAILE A,67
	POPJ P,
	IMULI 10
	ADDI -60(A)
	INCHRS A
	POPJ P,
	JRST INNUM+1
MTST:	HRRZI D,(DR)
	LSH DR,-1
	ANDI D,1
	XCT POTBL(D)
	TRNE ZHW	;TEST FOR ROM
	SKIPL C,	;TEST FOR RAM
	POPJ P,
NRAM:	TRNN IOBIT
	JRST IO
ILMEM:	JSR $I
	POPJ P,

POTBL:	HLRE MEM(DR)
	HRRE MEM(DR)

UDO:	JSR $I
	POPJ P,

MFTCH:	HRRZI DR,(MA)
	PUSHJ P,MTST
	TDZ ZWD
	POPJ P,

IFTCH:	HRRZI DR,(PC)
	PUSHJ P,MTST
	TDZ ZWD
	HRRZ DR,
	AOJ PC,
	TRZ PC,ZHW16
	POPJ P,

AFTCH:	PUSHJ P,IFTCH
	HRRZI MA,(DR)
	PUSHJ P,IFTCH
	LSH 10
	OR MA,
	POPJ P,
	
DPTBL:	HRLM MEM(DR)
	HRRM MEM(DR)

MEMDP:	TDZ ZWD
	HRRZ D,
	HRRZI DR,(MA)
	LSH DR,-1
	ANDI MA,1
	XCT POTBL(MA)
	TRNN ZHW
	JRST WROM
	SETZ C,
	SKIPG
	PUSHJ P,NRAM
	ANDI ZHW
	ORI (D)
	XCT DPTBL(MA)
	POPJ P,

WROM:	JSR $I
	POPJ P,
IO:	TDZ D,ZWD
	SKIPL C
	JRST WRT
	SKIPE D
	JRST RDCON
	JRST CKDD
WRT:	SKIPE MA	;TEST FOR CONTROL REG
	POPJ P,
CKDD:	HRRZ E,MEM(DR)	;GET CON REG
	TRNN E,4	;DD BIT
	POPJ P,		;DD REG
	SKIPL C
	JRST RITEIT
	TRZ E,300	;RESET FLGS
	HRRM E,MEM(DR)
	TRNE DR,1	;TEST FOR PRA (KB)
	JRST READB
	HRRZ PREGA
	POPJ P,
READB:	HRRZ PREGB
	POPJ P,

PREGA:	0
PREGB:	0
	
RDCON:	TRNE DR,1	
	POPJ P,		;CRB
	HRRZ C,
	ANDI C,6
	CAIE C,6	;CK INPUT ENB
	POPJ P,
	INCHRW E	;CHECK FOR INPUT
	CAIN E,"I"∨200	;CK FOR NMI
	JRST SETNMI
	CAIN E,"I"	;CK FOR IRQ
	JRST SETIRQ
	CAIN E,"R"	;CK FOR RST
	JRST SETRST
	ANDI E,17
	CAILE E,11
	POPJ P,
	HRRZM E,PREGA
	TRO 200		;SET KB FLG BIT
	POPJ P,

SETIRQ:	SETO E,
	HRLM E,IFLG
	POPJ P,
SETNMI:	HRRZI E,NMIV
	CAIA
SETRST:	HRRZI E,RSTV
	HRRM E,IFLG
	POPJ P,
	
RITEIT:	TRNE DR,1	
	JRST LEDO
	HRRZM D,PREGA	;SAVE IT
	JRST POPIT

LEDO:	HRRZM D,PREGB	;SAVE IT
	ANDI E,54
	CAIE E,54	;CHECK FOR PULSE SET
	JRST POPIT
	HRRZI C,4
STRCH:	LSHC D,-1
	LSH E,-6
	SOJG C,STRCH
	OR E,[ASCID/0000 /]
	CAIGE D,2
	JRST DPYVAL
	CAILE D,5
	JRST POPIT
	MOVNI D,(D)
	MOVEM E,DPYTBL+5(D)
	JRST DPYS
DPYVAL:	MOVNI D,(D)
	MOVEM E,VALTBL+1(D)

DPYS:	PUSHJ P,DPYIT
	OUTSTR DPYTBL

POPIT:	POP P,C
	POPJ P,

DPY:	BYTE (8) 46,0,46 (3) 1,2,1,4
	BYTE (8) 2,1,10 (3)3,4,5,4

	ASCID/ 
 
 
 /
DPYTBL:	BLOCK 4
	ASCID/ 
 
 
           /
VALTBL:	BLOCK 2
	ASCID/ 
 
 
 
 
 
 
 
 /
	0
	dddlin ←←20000

DPYIT:	MOVEM SVZ#


outdd:	dpypos -620
	dpysiz 5001
	movni 1

	getlin

	tlnn dddlin
	JRST BACK

	DDUPG	BUFFPT

	AOS (P)
BACK:	MOVE SVZ
	POPJ P,

SVAC:	BLOCK 17

buffpt:	200000,,DPY
	23
	0
	DPY+1

erase:	ddupg	erspt
	popj	p,
ersbuf:	BYTE (8) 17,0,46 (3) 1,2,1,4	;funct. code, chan select, funct. code
	0
erspt:	ersbuf
	erspt-ersbuf
	0
	0
ZPAGE:	PUSHJ P,IFTCH
	HRRZI MA,(DR)
	PUSHJ P,MFTCH
	POPJ P,

ZPX:	PUSHJ P,IFTCH
	HRRZI MA,(DR)
	ADDI MA,(X)
	TRZ MA,ZHW
	PUSHJ P,MFTCH
	POPJ P,

ZPY:	PUSHJ P,IFTCH
	HRRZI MA,(DR)
	ADDI MA,(X)
	TRZ MA,ZHW
	PUSHJ P,MFTCH
	POPJ P,

ABS:	PUSHJ P,AFTCH
	PUSHJ P,MFTCH
	POPJ P,]

ABX:	PUSHJ P,AFTCH
	ADDI MA,(X)
	TRZ MA,ZHW16
	PUSHJ P,MFTCH
	POPJ P,

ABY:	PUSHJ P,AFTCH
	ADDI MA,(Y)
	TRZ MA,ZHW16
	PUSHJ P,MFTCH
	POPJ P,

INDX:	PUSHJ P,IFTCH
	ADDI (X)
	TRZ ZHW
	HRRZ MA,
	PUSHJ P,MFTCH
	HRRZ F,
	AOJ MA,
	PUSHJ P,MFTCH
	LSH 10
	OR F,
	HRRZI MA,(F)
	PUSHJ P,MFTCH
	POPJ P,

INDY:	PUSHJ P,ZPAGE
	HRRZ F,
	AOJ MA,
	PUSHJ P,MFTCH
	LSH 10
	ADDI (F)
	HRRZ MA,
	PUSHJ P,MFTCH
	POPJ P,]
LDIM:	PUSHJ P,IFTCH
	PUSHJ P,NZTST
	POPJ P,
LDZ:	PUSHJ P,ZPAGE
	PUSHJ P,NZTST
	POPJ P,
LDAAB:	PUSHJ P,ABS
	PUSHJ P,NZTST
	POPJ P,
LDAABX:	PUSHJ P,ABX
	PUSHJ P,NZTST
	POPJ P,
LDAABY:	PUSHJ P,ABY
	PUSHJ P,NZTST
	POPJ P,]
LDZX:	PUSHJ P,ZPX
	PUSHJ P,NZTST
	POPJ P,
LDZY:	PUSHJ P,ZPY
	PUSHJ P,NZTST
	POPJ P,
LDIX:	PUSHJ P,INDX
	PUSHJ P,NZTST
	POPJ P,
LDIY:	PUSHJ P,INDY
	PUSHJ P,NZTST
	POPJ P,
STZ:	PUSHJ P,IFTCH
	HRRZ MA,
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STAAB:	PUSHJ P,AFTCH
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STIX:	PUSHJ P,INDX
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STIY:	PUSHJ P,INDY
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STZX:	PUSHJ P,ZPX
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STZY:	PUSHJ P,ZPY
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STAABX:	PUSHJ P,ABX
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
STAABY:	PUSHJ P,ABY
	HRRZI (B)
	PUSHJ P,MEMDP
	POPJ P,
PUTCH:	HRRZI MA,PONE(SP)
	PUSHJ P,MEMDP
	SOSGE SP
	HRRZI SP,NEG1
	POPJ P,

PUL:	AOJ SP,
	TDZ SP,ZWD
	HRRZI MA,PONE(SP)
	PUSHJ P,MFTCH
	POPJ P,

PUPC:	PUSHJ P,IFTCH
	HRRZI (PC)
	LSH -10
	PUSHJ P,PUTCH
	HRRZI (PC)
	PUSHJ P,PUTCH
	POPJ P,

NZTST:	TRZ PS,NBIT∨ZBIT
	SKIPN
	TROE PS,ZBIT
	TRNN NBIT
	POPJ P,
	TRO PS,NBIT
	POPJ P,

CNZTST:	TRZ PS,CBIT
	TDZE ZWD
	TRO PS,CBIT
	PUSHJ P,NZTST
	POPJ P,

BITS:	TRZ PS,NBIT∨VBIT∨ZBIT
	TRNE NBIT
	TRO PS,NBIT
	TRNE VBIT
	TRO PS,VBIT
	SKIPN
	TRO PS,ZBIT
	POPJ P,

BRNCH:	TRNE DR,NBIT
	TDO DR,ZWD
	ADD PC,DR
	TDZ ZWD16
	POPJ P,

BRT:	PUSHJ P,IFTCH
	TRNE PS,(B)
	PUSHJ P,BRNCH
	POPJ P,

BRF:	PUSHJ P,IFTCH
	TRNN PS,(B)
	PUSHJ P,BRNCH
	POPJ P,
ORAC:	OR A
	PUSHJ P,NZTST
	HRRZ A,
	POPJ P,

ASLF:	LSH 1
	PUSHJ P,CNZTST
	POPJ P,

AAND:	AND A
	PUSHJ P,NZTST
	HRRZ A,
	POPJ P,

EORA:	XORI (A)
	PUSHJ P,NZTST
	HRRZ A,
	POPJ P,

LSRT:	TRZ PS,NBIT∨ZBIT∨CBIT
	TRNE 1
	TRO PS,CBIT
	LSH -1
	SKIPN
	TRO PS,ZBIT
	POPJ P,

ROLF:	LSH 1
	TRNE PS,CBIT
	TRO 1
	PUSHJ P,CNZTST
	POPJ P,

INCM:	AOJ
	TRZ ZHW
	PUSHJ P,NZTST
	POPJ P,

DECM:	SOSGE
	HRRZI NEG1
	PUSHJ P,NZTST
	POPJ P,
ADDER:	TRZ PS,VBIT
	TRNN NBIT
	JRST POS
	PUSHJ P,ALUX
	TRNE B,NBIT
	TRNE PS,NBIT
	POPJ P,
	JRST OV

POS:	PUSHJ P,ALUX
	TRNN B,NBIT
	TRNN PS,NBIT
	POPJ P,
OV:	TRO PS,VBIT
	POPJ P,

ALUX:	ADDI (B)
	TRNE PS,CBIT
	AOJ
	PUSHJ P,CNZTST
	POPJ P,

SUBER:	TRC NEG1
	PUSHJ P,ADDER
	POPJ P,
	
ADCA:	HRRZI B,(A)
	PUSHJ P,ADDER
	HRRZ A,
	POPJ P,

SBCA:	HRRZI B,(A)
	PUSHJ P,SUBER
	HRRZ A,
	POPJ P,

CMPER:	TRC NEG1
	TRO PS,CBIT
	PUSHJ P,ALUX
	POPJ P,

CMPM:	HRRZI B,(A)
	PUSHJ P,CMPER
	POPJ P,
CPXM:	HRRZI B,(X)
	PUSHJ P,CMPER
	POPJ P,
CPYM:	HRRZI B,(Y)
	PUSHJ P,CMPER
	POPJ P,
INSTBL:	
[	PUSHJ P,PUPC		;BRK
	PUSHJ P,@INSTBL+PHP
	TRO PS,BRKBIT∨IBIT
	HRRZI PC,IRQV
	PUSHJ P,@INSTBL+JMP
	POPJ P,]
[	PUSHJ P,INDX		;ORAIX
	PUSHJ P,ORAC
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPAGE		;ORAZ
	PUSHJ P,ORAC
	POPJ P,]
[	PUSHJ P,ZPAGE		;ASLZ
	PUSHJ P,ASLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI (PS)		;PHP
	PUSHJ P,PUTCH
	POPJ P,]
[	PUSHJ P,IFTCH		;ORAI
	PUSHJ P,ORAC
	POPJ P,]
[	HRRZI (A)		;ASLA
	PUSHJ P,ASLF
	HRRZ A,
	POPJ P,]
UDO
UDO
[	PUSHJ P,ABS		;ORA
	PUSHJ P,ORAC
	POPJ P,]
[	PUSHJ P,ABS		;ASL
	PUSHJ P,ASLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI B,NBIT		;BPL
	PUSHJ P,BRF
	POPJ P,]
[	PUSHJ P,INDY		;ORAIY
	PUSHJ P,ORAC
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPX		;ORAZ
	PUSHJ P,ORAC
	POPJ P,]
[	PUSHJ P,ZPX		;ASLZ
	PUSHJ P,ASLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	TRZ PS,CBIT		;CLC
	POPJ P,]
[	PUSHJ P,ABY		;ORAY
	PUSHJ P,ORAC
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ABX		;ORAX
	PUSHJ P,ORAC
	POPJ P,]
[	PUSHJ P,ABX		;ASLX
	PUSHJ P,ASLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI 1(PC)		;JSR
	LSH -10	
	PUSHJ P,PUTCH
	HRRZI 1(PC)
	PUSHJ P,PUTCH
	PUSHJ P,@INSTBL+JMP
	POPJ P,]
[	PUSHJ P,INDX		;ANDIX
	PUSHJ P,AAND
	POPJ P,]
UDO
UDO
[	PUSHJ P,ZPAGE		;BITZ
	PUSHJ P,BITS
	POPJ P,]
[	PUSHJ P,ZPAGE		;ANDZ
	PUSHJ P,AAND
	POPJ P,]
[	PUSHJ P,ZPAGE		;ROLZ
	PUSHJ P,ROLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	PUSHJ P,PUL		;PLP
	HRRZ PS,
	POPJ P,]
[	PUSHJ P,IFTCH		;ANDI
	PUSHJ P,AAND
	POPJ P,]
[	HRRZI (A)		;ROLA
	PUSHJ P,ROLF
	HRRZ A,
	POPJ P,]
UDO
[	PUSHJ P,ABS
	PUSHJ P,BITS
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,AAND
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,ROLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI B,NBIT
	PUSHJ P,BRT
	POPJ P,]
[	PUSHJ P,INDY
	PUSHJ P,AAND
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPX
	PUSHJ P,AAND
	POPJ P,]
[	PUSHJ P,ZPX
	PUSHJ P,ROLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	TRO PS,CBIT
	POPJ P,]
[	PUSHJ P,ABY
	PUSHJ P,AAND
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ABX
	PUSHJ P,AAND
	POPJ P,]
[	PUSHJ P,ABX
	PUSHJ P,ROLF
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	PUSHJ P,PUL		;RTI
	HRRZ PS,
	PUSHJ P,@INSTBL+RTS
	SOJ PC,
	POPJ P,]
[	PUSHJ P,INDX		;EROIX
	PUSHJ P,EORA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPAGE		;EORZ
	PUSHJ P,EORA
	POPJ P,]
[	PUSHJ P,ZPAGE		;LSRZ
	PUSHJ P,LSRT
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI (A)		;PHA
	PUSHJ P,PUTCH
	POPJ P,]
[	PUSHJ P,IFTCH		;EORI
	PUSHJ P,EORA
	POPJ P,]
[	HRRZI (A)		;LSRA
	PUSHJ P,LSRT
	HRRZ A,
	POPJ P,]
UDO
[	PUSHJ P,AFTCH		;JMP
	HRRZI PC,(MA)
	POPJ P,]
[	PUSHJ P,ABS		;EOR
	PUSHJ P,EORA
	POPJ P,]
[	PUSHJ P,ABS		;LSR
	PUSHJ P,LSRT
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	HRRZI B,VBIT		;BVC
	PUSHJ P,BRF
	POPJ P,]
[	PUSHJ P,INDY		;EORIY
	PUSHJ P,EORA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPX		;EORZX
	PUSHJ P,EORA
	POPJ P,]
[	PUSHJ P,ZPX		;LSRZX
	PUSHJ P,LSRT
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	TRZ PS,IBIT		;CLI
	POPJ P,]
[	PUSHJ P,ABY		;EORY
	PUSHJ P,EORA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ABX		;EORX
	PUSHJ P,EORA
	POPJ P,]
[	PUSHJ P,ABX		;LSRX
	PUSHJ P,LSRT
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	PUSHJ P,PUL	;RTS
	HRRZ PC,
	PUSHJ P,PUL
	LSH 10
	OR PC,
	AOJ PC,
	TDZ PC,ZWD16
	POPJ P,]
[	PUSHJ P,INDX	;ADCIX
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPAGE	;ADCZ
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO

[	PUSHJ P,PUL	;PLA
	HRRZ A,
	POPJ P,]
[	PUSHJ P,IFTCH
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO
[	PUSHJ P,ABS	;JMPIN
	HRRZ PC,
	AOJ MA,
	PUSHJ P,MFTCH
	LSH 10
	OR PC,
	PUSHJ P,@INSTBL+JMP
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO

[	HRRZI B,VBIT
	PUSHJ P,BRT
	POPJ P,]
[	PUSHJ P,INDY
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPX
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO
[	TRO PS,IBIT		;SEI
	POPJ P,]
[	PUSHJ P,ABY		;ADCY
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ABX
	PUSHJ P,ADCA
	POPJ P,]
UDO
UDO

UDO
[	HRRZI B,(A)
	PUSHJ P,STIX
	POPJ P,]
UDO
UDO
[	HRRZI B,(Y)
	PUSHJ P,STZ
	POPJ P,]
[	HRRZI B,(A)
	PUSHJ P,STZ
	POPJ P,]
[	HRRZI B,(X)
	PUSHJ P,STZ
	POPJ P,]
UDO

[	HRRZI (Y)
	PUSHJ P,DECM
	HRRZ Y,
	POPJ P,]
UDO
[	HRRZI (X)
	PUSHJ P,NZTST
	HRRZI A,(X)
	POPJ P,]
UDO
[	HRRZI B,(Y)
	PUSHJ P,STAAB
	POPJ P,]
[	HRRZI B,(A)
	PUSHJ P,STAAB
	POPJ P,]
[	HRRZI B,(X)
	PUSHJ P,STAAB
	POPJ P,]
UDO
[	HRRZI B,CBIT
	PUSHJ P,BRF
	POPJ P,]
[	HRRZI B,(A)
	PUSHJ P,STIY
	POPJ P,]
UDO
UDO
[	HRRZI B,(Y)
	PUSHJ P,STZX
	POPJ P,]
[	HRRZI B,(A)
	PUSHJ P,STZX
	POPJ P,]
[	HRRZI B,(X)
	PUSHJ P,STZY
	POPJ P,]
UDO

[	HRRZI (Y)
	PUSHJ P,NZTST
	HRRZI A,(Y)
	POPJ P,]
[	HRRZI B,(A)
	PUSHJ P,STAABY
	POPJ P,]
[	HRRZI SP,(X)
	POPJ P,]
UDO
UDO
[	HRRZI B,(A)
	PUSHJ P,STAABX
	POPJ P,]
UDO
UDO

[	PUSHJ P,LDIM
	HRRZ Y,
	POPJ P,]
[	PUSHJ P,LDIX
	HRRZ A,
	POPJ P,]
[	PUSHJ P,LDIM
	HRRZ X,
	POPJ P,]
UDO
[	PUSHJ P,LDZ
	HRRZ Y,
	POPJ P,]
[	PUSHJ P,LDZ
	HRRZ A,
	POPJ P,]
[	PUSHJ P,LDZ
	HRRZ X,
	POPJ P,]
UDO
[	HRRZI (A)
	PUSHJ P,NZTST
	HRRZI Y,(A)
	POPJ P,]
[	PUSHJ P,LDIM
	HRRZ A,
	POPJ P,]
[	HRRZI (A)
	PUSHJ P,NZTST
	HRRZI X,(A)
	POPJ P,]
UDO
[	PUSHJ P,LDAAB
	HRRZ Y,
	POPJ P,]
[	PUSHJ P,LDAAB
	HRRZ A,
	POPJ P,]
[	PUSHJ P,LDAAB
	HRRZ X,
	POPJ P,]
UDO

[	HRRZI B,CBIT
	PUSHJ P,BRT
	POPJ P,]
[	PUSHJ P,LDIY
	HRRZ A,
	POPJ P,]
UDO
UDO
[	PUSHJ P,LDZX
	HRRZ Y,
	POPJ P,]
[	PUSHJ P,LDZX
	HRRZ A,
	POPJ P,]
[	PUSHJ P,LDZY
	HRRZ X,
	POPJ P,]
UDO

[	TRZ PS,VBIT
	POPJ P,]
[	PUSHJ P,LDAAB
	HRRZ A,
	POPJ P,]
[	HRRZI X,(SP)
	POPJ P,]
UDO
[	PUSHJ P,LDAABX
	HRRZ Y,
	POPJ P,]
[	PUSHJ P,LDAABX
	HRRZ A,
	POPJ P,]
[	PUSHJ P,LDAABY
	HRRZ X,
	POPJ P,]
UDO
[	PUSHJ P,IFTCH
	PUSHJ P,CPYM
	POPJ P,]
[	PUSHJ P,INDX
	PUSHJ P,CMPM
	POPJ P,]
UDO
UDO
[	PUSHJ P,ZPAGE
	PUSHJ P,CPYM
	POPJ P,]
[	PUSHJ P,ZPAGE
	PUSHJ P,CMPM
	POPJ P,]
[	PUSHJ P,ZPAGE
	PUSHJ P,DECM
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI (Y)
	PUSHJ P,INCM
	HRRZ Y,
	POPJ P,]
[	PUSHJ P,IFTCH
	PUSHJ P,CMPM
	POPJ P,]
[	HRRZI (X)
	PUSHJ P,DECM
	HRRZ X,
	POPJ P,]
UDO
[	PUSHJ P,ABS
	PUSHJ P,CPYM
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,CMPM
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,DECM
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI B,ZBIT
	PUSHJ P,BRF
	POPJ P,]
[	PUSHJ P,INDY
	PUSHJ P,CMPM
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPX
	PUSHJ P,CMPM
	POPJ P,]
[	PUSHJ P,ZPX
	PUSHJ P,DECM
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	TRZ PS,DBIT
	POPJ P,]
[	PUSHJ P,ABY
	PUSHJ P,CMPM
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ABX
	PUSHJ P,CMPM
	POPJ P,]
[	PUSHJ P,ABX
	PUSHJ P,DECM
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	PUSHJ P,IFTCH
	PUSHJ P,CPXM
	POPJ P,]
[	PUSHJ P,INDX
	PUSHJ P,SBCA
	POPJ P,]
UDO
UDO
[	PUSHJ P,ZPAGE
	PUSHJ P,CPXM
	POPJ P,]
[	PUSHJ P,ZPAGE
	PUSHJ P,SBCA
	POPJ P,]
[	PUSHJ P,ZPAGE
	PUSHJ P,INCM
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	HRRZI (X)
	PUSHJ P,INCM
	HRRZ X,
	POPJ P,]
[	PUSHJ P,IFTCH
	PUSHJ P,SBCA
	POPJ P,]
[	POPJ P,]
UDO
[	PUSHJ P,ABS
	PUSHJ P,CPXM
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,SBCA
	POPJ P,]
[	PUSHJ P,ABS
	PUSHJ P,INCM
	PUSHJ P,MEMDP
	POPJ P,]
UDO
[	HRRZI B,ZBIT
	PUSHJ P,BRT
	POPJ P,]
[	PUSHJ P,INDY
	PUSHJ P,SBCA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ZPX
	PUSHJ P,SBCA
	POPJ P,]
[	PUSHJ P,ZPX
	PUSHJ P,INCM
	PUSHJ P,MEMDP
	POPJ P,]
UDO

[	TRO PS,DBIT
	POPJ P,]
[	PUSHJ P,ABY
	PUSHJ P,SBCA
	POPJ P,]
UDO
UDO
UDO
[	PUSHJ P,ABX
	PUSHJ P,SBCA
	POPJ P,]
[	PUSHJ P,ABX
	PUSHJ P,INCM
	PUSHJ P,MEMDP
	POPJ P,]
UDO
IBUF:	BLOCK 4
FILNAM:	0
FILEXT:	0
	0
FILPPN:	0

GNAME:	SETZM FILEXT+1
	SETZM FILPPN
	MOVE A,['DMP   ']
	MOVEM A,FILEXT
	PUSHJ P,GETNAM
	SKIPN A
 	MOVE A,['ROM   ']
GEXT:	MOVEM A,FILNAM
	CAIE C,"."
	JRST NOEXTN
	PUSHJ P,GETNAM
	MOVEM A,FILEXT
NOEXTN:	CAIE C,"["
	JRST FFDX
	PUSHJ P,GETP
	HRLZM A,FILPPN
	PUSHJ P,GETP
	HRRM A,FILPPN
FFDX:	INCHRW C
	CAIE C,12
	JRST FFDX
	POPJ P,
GETNAM:	MOVEI A,
	MOVE B,[440600,,A]
GETNML:	PUSHJ P,RCH
	POPJ P,
	SUBI C,40
	TLNE B,770000
	IDPB C,B
	JRST GETNML

GETP:	MOVEI A,
GETPL:	PUSHJ P,RCH
	POPJ P,
	TRNE A,770000
	JRST GETPL
	LSH A,6
	ADDI A,-40(C)
	JRST GETPL

RCH:	INCHWL C
	CAIN C,42
	JRST RCHQ
	CAIE C,11
	CAIN C," "
	JRST RCH
	CAIE C,"."
	CAIN C,","
	POPJ P,
	CAIE C,"["
	CAIN C,"]"
	POPJ P,
RCHQR:	CAIGE C,40
	POPJ P,
	CAIL C,"a"
	CAILE C,"z"
	CAIA
	SUBI C,40
POPJ1:	AOS (P)
	POPJ P,

RCHQ:	INCHWL C
	JRST RCHQR

MEM:	BLOCK 100000
	END STAR